<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 1、 3 + 2 +“7”的结果是什么？3 + (2 + "7")的结果又是什么？这两个表达式输出的值是什么类型？
            57  由于3和2是整数,它们将直接相加。由于7是一个字符串,它将会被直接连接,所以结果将是57。字符串类型
        // 2、6 - false的结果是什么？
            6
        // 3、6 - "false"和6 + "false"的结果分别是什么？结果输出值是什么数据类型？
            NaN 数值数据类型 6false 字符串类型
        // 4、请分析console.log(1 + - + + + - + 1)的结果？
            =1 + - + + + - 1
            =1 + (- ( + ( + ( + (- 1))))
            =1 + (1)
            =2

        // 5、下面代码分别输出什么？前自增(自减)与后自增(自减)的区别？
            let a = 1;
            let b = ++a + ++a;
            console.log(b);
            // b=5 前置：运算符放在操作数的前面（先自减、再使用）
            let a = 1;
            let b = a++ + a++;
            console.log(b);
            // b=3 后置：运算符在操作数的后面（先使用，再计算自减）
        // 6、分析下面代码，请问 j 和 y 分别是多少？(不要运行代码，自己分析后写出答案)
            var i = 100;
            i++;
            j = i++;
            y = ++j
            // i=100 运算i++ j=101 运算第二个i++ 先使用i后加上1 i=101  先加1在使用j y=102;

        // 7、JS中哪些值通过Boolean对象转换出来的值为`false`?
        1、undefined（未定义，找不到值时出现）

        2、null（代表空值）

        3、false（布尔值的false，字符串"false"布尔值为true）

        4、0（数字0，字符串"0"布尔值为true）

        5、NaN（无法计算结果时出现，表示"非数值"；但是typeof NaN==="number"）

        6、""（双引号）或''（单引号） （空字符串，中间有空格时也是true）
        // 8、分析下面代码的结果并解释原因。
            let a = 1;
            let b = 2;

            console.log(a && b);
                // 2 &&是与运算符，只有当所有条件都为真时，该运算结果才能为真（是一个找假的过程）
            console.log(a || b);
                // 1 ||是或运算，只要当其中条件有一个为真时，结果就为真，只有当所有条件都为假时，结果才是假（是一个找真的过程）

        // 9、以下代码输出的结果分别是什么？
            let a = true && "" && 12306;
            let b = false || "" || undefined || "bluej" || 12306;

            console.log(a);// ""
            
            console.log(b); // bluej
           
        // 10、分析下面代码，分别输出什么？(以注释形式写在console.log后面)
            let str = "12306";
            let str1 = 1;
            let num = 12306;
            let boo = true;

            console.log(str == num);//true
            console.log(str === num);//false
            console.log(str1 == boo);//true
            console.log(str1 === boo);//false


        // 提高题，非必做

        // - 写出执行结果,并解释原因

        var company = {
            address: 'beijing'
        }
        var yideng = Object.create(company);
        delete yideng.address
        console.log(yideng.address);
        //beijing 

        // - 写出执行结果,并解释原因
        
        var x=1;
        if(function f(){}){
            x += typeof f;
        }
        console.log(x)
        //1undefined   
    </script>
</body>

</html>